package com.codi.bus.core.service.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.codi.base.domain.BaseDomain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

/**
 * 模块名
 *
 * @author spy
 * @version 1.0 2017-12-01 13:16
 * @since 1.0
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PayMethodModel extends BaseDomain {

    @JSONField(ordinal = 10)
    private String payType;

    @JSONField(ordinal = 11)
    private String payName;

    @JSONField(ordinal = 12)
    private String fundCode;

    @JSONField(ordinal = 13)
    private String fundName;

    @JSONField(ordinal = 20)
    private String bankCode;

    @JSONField(ordinal = 21)
    private String bankName;

    @JSONField(ordinal = 22)
    private String bankNo;

    @JSONField(ordinal = 23)
    private String capitalMode;

    @JSONField(ordinal = 30)
    private String tradeAcco;

    @JSONField(ordinal = 40)
    @Builder.Default
    private Boolean canUse = true;

    // 余额
    @JSONField(ordinal = 50)
    @Builder.Default
    private BigDecimal balance = new BigDecimal(0);

    // 单笔最小值
    @JSONField(ordinal = 55)
    @Builder.Default
    private BigDecimal singleDealMinValue = new BigDecimal(-1);

    // 单笔限额
    @JSONField(ordinal = 60)
    @Builder.Default
    private BigDecimal singleDealMaxValue = new BigDecimal(-1);

    // 单日限额
    @JSONField(ordinal = 65)
    @Builder.Default
    private BigDecimal dayDealMaxValue = new BigDecimal(-1);

    // 单日剩余可用限额
    @JSONField(ordinal = 70)
    @Builder.Default
    private BigDecimal dayDealRetainMaxValue = new BigDecimal(-1);

    // 月限额
    @JSONField(ordinal = 75)
    @Builder.Default
    private BigDecimal monthDealMaxValue = new BigDecimal(-1);

    // 月剩余可用限额
    @JSONField(ordinal = 80)
    @Builder.Default
    private BigDecimal monthDealRetainMaxValue = new BigDecimal(-1);

    private Boolean isInside;

    private List<PayMethodModel> payMethodModels;
}
